import type { App } from 'vue';
//  此处只引入基础组件，不包含与布局设置相关的
export function registerCommonComp(app: App) {
	app.component(
		'AppCopyRight',
		defineAsyncComponent(
			() => import('../components/common/copyright/src/copyright.vue')
		)
	);
	app.component(
		'AppTodoList',
		defineAsyncComponent(
			() => import('../components/common/todo-list/src/todo-list.vue')
		)
	);
	app.component(
		'AppExtendActionTimeline',
		defineAsyncComponent(
			() =>
				import(
					'../components/common/extend-action-timeline/src/extend-action-timeline.vue'
				)
		)
	);
	app.component(
		'AppHtmlContainer',
		defineAsyncComponent(
			() =>
				import('../components/function/html-container/src/html-container.vue')
		)
	);
	app.component(
		'AppAutoComplete',
		defineAsyncComponent(
			() => import('../components/common/autocomplete/src/auto-complete.vue')
		)
	);
	app.component(
		'AppButton',
		defineAsyncComponent(
			() => import('../components/common/button/src/button.vue')
		)
	);
	app.component(
		'AppInput',
		defineAsyncComponent(
			() => import('../components/common/input/src/input.vue')
		)
	);
	app.component(
		'AppIconText',
		defineAsyncComponent(
			() => import('../components/common/icon-text/src/icon-text.vue')
		)
	);
	app.component(
		'AppUpload',
		defineAsyncComponent(
			() => import('../components/common/upload/src/upload.vue')
		)
	);
	app.component(
		'AppSpan',
		defineAsyncComponent(() => import('../components/common/span/src/span.vue'))
	);
	app.component(
		'AppDropdownList',
		defineAsyncComponent(
			() => import('../components/common/dropdown-list/src/dropdown-list.vue')
		)
	);
	app.component(
		'AppCheckbox',
		defineAsyncComponent(
			() => import('../components/common/checkbox/src/checkbox.vue')
		)
	);
	app.component(
		'AppStepper',
		defineAsyncComponent(
			() => import('../components/common/stepper/src/stepper.vue')
		)
	);
	app.component(
		'AppRating',
		defineAsyncComponent(
			() => import('../components/common/rating/src/rating.vue')
		)
	);
	app.component(
		'AppSlider',
		defineAsyncComponent(
			() => import('../components/common/slider/src/slider.vue')
		)
	);
	app.component(
		'AppSwitch',
		defineAsyncComponent(
			() => import('../components/common/switch/src/switch.vue')
		)
	);
	app.component(
		'AppCheckboxList',
		defineAsyncComponent(
			() => import('../components/common/checkbox-list/src/checkbox-list.vue')
		)
	);
	app.component(
		'AppRadioGroup',
		defineAsyncComponent(
			() => import('../components/common/radio-group/src/radio-group.vue')
		)
	);
	app.component(
		'AppListBox',
		defineAsyncComponent(
			() => import('../components/common/list-box/src/list-box.vue')
		)
	);
	app.component(
		'AppDatePicker',
		defineAsyncComponent(
			() => import('../components/common/date-picker/src/date-picker.vue')
		)
	);
	app.component(
		'AppRaw',
		defineAsyncComponent(() => import('../components/common/raw/src/raw.vue'))
	);
	app.component(
		'AppCaptionBar',
		defineAsyncComponent(
			() => import('../components/common/caption-bar/src/caption-bar.vue')
		)
	);
	app.component(
		'AppDataInfoBar',
		defineAsyncComponent(
			() => import('../components/common/data-info-bar/src/data-info-bar.vue')
		)
	);
	app.component(
		'AppFullScreen',
		defineAsyncComponent(
			() => import('../components/common/full-screen/src/full-screen.vue')
		)
	);
	app.component(
		'AppLockScreen',
		defineAsyncComponent(
			() => import('../components/common/lock-screen/src/lock-screen.vue')
		)
	);
	app.component(
		'AppMessagePopover',
		defineAsyncComponent(
			() =>
				import('../components/common/message-popover/src/message-popover.vue')
		)
	);
	app.component(
		'TabPageExp',
		defineAsyncComponent(
			() => import('../components/common/tab-page-exp/src/tab-page-exp.vue')
		)
	);
	app.component(
		'AppUser',
		defineAsyncComponent(() => import('../components/common/user/src/user.vue'))
	);
	app.component(
		'AppTheme',
		defineAsyncComponent(
			() => import('../components/common/theme/src/theme.vue')
		)
	);
	app.component(
		'AppQuickGroup',
		defineAsyncComponent(
			() => import('../components/common/quick-group/src/quick-group.vue')
		)
	);
	app.component(
		'AppDataImport',
		defineAsyncComponent(
			() => import('../components/function/data-import/src/data-import.vue')
		)
	);
	app.component(
		'AppRichText',
		defineAsyncComponent(
			() => import('../components/common/richtext/src/richtext.vue')
		)
	);
	app.component(
		'AppInputIp',
		defineAsyncComponent(
			() => import('../components/common/input-ip/src/input-ip.vue')
		)
	);
	app.component(
		'AppDataPicker',
		defineAsyncComponent(
			() => import('../components/common/data-picker/src/data-picker.vue')
		)
	);
	app.component(
		'AppMarkDown',
		defineAsyncComponent(
			() => import('../components/common/markdown/src/markdown.vue')
		)
	);
	app.component(
		'AppDataPickerView',
		defineAsyncComponent(
			() =>
				import('../components/common/data-picker-view/src/data-picker-view.vue')
		)
	);
	app.component(
		'AppQuickSearch',
		defineAsyncComponent(
			() => import('../components/common/quick-search/src/quick-search.vue')
		)
	);
	app.component(
		'AppOrgSelect',
		defineAsyncComponent(
			() => import('../components/common/org-select/src/org-select.vue')
		)
	);
	app.component(
		'AppDepartmentSelect',
		defineAsyncComponent(
			() =>
				import(
					'../components/common/department-select/src/department-select.vue'
				)
		)
	);
	app.component(
		'AppEmptyDataTip',
		defineAsyncComponent(
			() => import('../components/common/empty-data-tip/src/empty-data-tip.vue')
		)
	);
	app.component(
		'AppLang',
		defineAsyncComponent(() => import('../components/common/lang/src/lang.vue'))
	);
	app.component(
		'AppDeptPersonnelSelect',
		defineAsyncComponent(
			() =>
				import(
					'../components/common/department-personnel-select/src/department-personnel-select.vue'
				)
		)
	);
	app.component(
		'AppOrgPersonnelSelect',
		defineAsyncComponent(
			() =>
				import(
					'../components/common/org-personnel-select/src/org-personnel-select.vue'
				)
		)
	);
	app.component(
		'AppGroupSelect',
		defineAsyncComponent(
			() => import('../components/common/group-select/src/group-select.vue')
		)
	);
	app.component(
		'AppAlert',
		defineAsyncComponent(
			() => import('../components/common/alert/src/alert.vue')
		)
	);
	app.component(
		'AppBreadCrumb',
		defineAsyncComponent(
			() => import('../components/common/breadcrumb/src/breadcrumb.vue')
		)
	);
	app.component(
		'AppOrgSector',
		defineAsyncComponent(
			() => import('../components/common/orgsector/src/orgsector.vue')
		)
	);
	app.component(
		'AppPanelField',
		defineAsyncComponent(
			() => import('../components/common/panel-field/src/panel-field.vue')
		)
	);
	// index
	app.component(
		'AppIndexNavBreadcrumb',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/index/index-nav-breadcrumb/src/index-nav-breadcrumb.vue'
				)
		)
	);
	app.component(
		'AppIndexNavTabs',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/index/index-nav-tabs/src/index-nav-tabs.vue'
				)
		)
	);
	app.component(
		'AppIndexOrgSelect',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/index/index-org-select/src/index-org-select.vue'
				)
		)
	);
	app.component(
		'AppIndexUserInfo',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/index/index-user-info/src/index-user-info.vue'
				)
		)
	);
	// interactive
	app.component(
		'AppPresetButton',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/interactive/preset-button/src/preset-button.vue'
				)
		)
	);
	app.component(
		'AppPresetQrcode',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/interactive/preset-qrcode/src/preset-qrcode.vue'
				)
		)
	);
	app.component(
		'AppPresetSwitch',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/interactive/preset-switch/src/preset-switch.vue'
				)
		)
	);
	app.component(
		'AppPresetTextInput',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/interactive/preset-text-input/src/preset-text-input.vue'
				)
		)
	);
	// login
	app.component(
		'AppLoginCaptcha',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/login/login-captcha/src/login-captcha.vue'
				)
		)
	);
	app.component(
		'AppLoginInput',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/login/login-input/src/login-input.vue'
				)
		)
	);
	app.component(
		'AppLoginMessage',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/login/login-message/src/login-message.vue'
				)
		)
	);
	app.component(
		'AppLoginNoteVerify',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/login/login-note-verify/src/login-note-verify.vue'
				)
		)
	);
	app.component(
		'AppLoginOrg',
		defineAsyncComponent(
			() =>
				import('../components/layout-element/login/login-org/src/login-org.vue')
		)
	);
	app.component(
		'AppThirdLogin',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/login/login-third/src/login-third.vue'
				)
		)
	);
	// media
	app.component(
		'AppFieldImageDynamic',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/media/field-image-dynamic/src/field-image-dynamic.vue'
				)
		)
	);
	app.component(
		'AppRawItemCarousel',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/media/rawitem-carousel/src/rawitem-carousel.vue'
				)
		)
	);
	app.component(
		'AppRawItemImage',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/media/rawitem-image/src/rawitem-image.vue'
				)
		)
	);
	app.component(
		'AppRawItemVideo',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/media/rawitem-video/src/rawitem-video.vue'
				)
		)
	);
	// structure
	app.component(
		'AppNavPos',
		defineAsyncComponent(
			() =>
				import('../components/layout-element/structure/nav-pos/src/nav-pos.vue')
		)
	);
	// text
	app.component(
		'AppPresetCaption',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/text/preset-caption/src/preset-caption.vue'
				)
		)
	);
	app.component(
		'AppPresetText',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/text/preset-text/src/preset-text.vue'
				)
		)
	);
	app.component(
		'AppPresetTitle',
		defineAsyncComponent(
			() =>
				import(
					'../components/layout-element/text/preset-title/src/preset-title.vue'
				)
		)
	);
	//扩展
	app.component(
		'AppColorSpan',
		defineAsyncComponent(
			() => import('../components/common/color-span/src/color-span.vue')
		)
	);
	app.component(
		'AppSpanAfterTime',
		defineAsyncComponent(
			() => import('../components/common/span-aftertime/src/span-aftertime.vue')
		)
	);
	app.component(
		'AppSliderProgress',
		defineAsyncComponent(
			() =>
				import('../components/common/slider-progress/src/slider-progress.vue')
		)
	);
	app.component(
		'AppDevActionBar',
		defineAsyncComponent(
			() => import('../components/common/dev-action-bar/src/dev-action-bar.vue')
		)
	);
	app.component(
		'AppDebugActions',
		defineAsyncComponent(
			() => import('../components/common/debug-actions/src/debug-actions.vue')
		)
	);
	app.component(
		'AppTransition',
		defineAsyncComponent(
			() => import('../components/common/transition/src/transition.vue')
		)
	);
}
